#pragma once
#include <QWidget>

#include "AlgorithmLink/AlgorithmLink_lines.h"
#include "DataParser_lines.h"
#include "Data_lines.h"

#include "../../src_baseClasses/TabPage.h"
#include "../../src_config/configUI.h"
#include "../../src_config/DiagramStyle.h"
#include "../Diagram.h"

class TabPage_lines : public TabPage
{
	Q_OBJECT
public:
	TabPage_lines(QString qFullName, QString qFilePath, QString qFileName, QWidget* parent)
		: TabPage(qFullName, qFilePath, qFileName, parent) {
		m_data = new Data_lines();
		m_parser = new DataParser_post(m_data);
	}
	~TabPage_lines() {
		      delete m_parser;
			  delete m_data;
			  if (m_algm) {
				  delete m_algm;
				  m_algm = nullptr;
			  }
	}

private:
	Data_lines* m_data;	        //数据对象
	DataParser_post* m_parser;	//数据解析器
	bool m_resAdded = false;
	AlgorithmLink_lines* m_algm;

private:    // 自动内存管理部分
	ConfigUI* m_config;	//配置信息
	void fillData(ConfigUI* conf);
	void refreshUI();

public:	//槽函数(实现虚函数)
	void action_reset() {};				// 复位重置（仅针对读取map类的txt文件）
	void action_random_pin() {};			// 重新生成随机pin
	void pin_decrease() {};				// pin数量减少
	void action_pin_increase() {};			// pin数量增加
	void action_save_case();			// 保存case
	void action_save_image() {};			// 保存图片
	void action_write_pre() {};			// 保存预处理结果
	void action_write_res() {};			// 在预处理结果后面追加结果
	void pressRunButton() {};

	void onConfigChanged();
	void tranformChanged();
	// 鼠标事件的交互
	void leftPressRun(SelectedTarget* target);
	void leftPressMoveRun(SelectedTarget* target);
	void leftReleaseRun(SelectedTarget* target);
	
};


